﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MarketOnlineBUS;
using MarketOnlineDTO;

public partial class Pay : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<GioHangDTO> list = new List<GioHangDTO>();
        list = (List<GioHangDTO>)Session["Cart"];
        if (list.Count == 0)
        {
            Response.Redirect("ThongBao.aspx?id=empty");
            return;
        }

        

        if (!IsPostBack)
        {
            init();
            initNgayGio();
        }
    }

    public void init()
    { 
        List<GioHangDTO> list = new List<GioHangDTO>();
        list=(List<GioHangDTO>)Session["Cart"];

        lbTongTriGiaHoaDon.Text = new GioHangBUS().TinhTongTienGioHang(list).ToString()+" VNĐ";
        dgvGioHang.DataSource = list;
        dgvGioHang.DataBind();


        
        
    }

    public void initNgayGio()
    {
        DateTime d = new DateTime();
        d = DateTime.Now;

        cbGioNhan.Items.Add("--");
        for (int i = 7; i <=20; i++)
            cbGioNhan.Items.Add(i.ToString());

        cbPhutNhan.Items.Add("--");
        cbPhutNhan.Items.Add("00");
        cbPhutNhan.Items.Add("15");
        cbPhutNhan.Items.Add("30");
        cbPhutNhan.Items.Add("45");

        cbNgay.Items.Add("--");
        for (int i = 1; i <= 31; i++)
            cbNgay.Items.Add(i.ToString());


        cbThang.Items.Add("--");
        for (int i = 1; i <= 12; i++)
            cbThang.Items.Add(i.ToString());

        cbNam.Items.Add("--");
        cbNam.Items.Add(d.Year.ToString());
        cbNam.Items.Add((d.Year+1).ToString());



        cbNgay.SelectedValue = d.Day.ToString();
        cbThang.SelectedValue = d.Month.ToString();
        cbNam.SelectedValue = d.Year.ToString();
    }


    protected void Button1_Click(object sender, EventArgs e)
    {


        //Kiểm tra form
        
        //Check Họ tên khách hàng
        if (txtTenKhachHang.Text=="")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtTenKhachHang.Text))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    txtTenKhachHang.Text, "alert('Tên khách hàng không rỗng')", true);
            }

            return;
        }


        //Check Họ tên khách hàng
        if (txtTenKhachHang.Text == "")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtTenKhachHang.Text))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    txtTenKhachHang.Text, "alert('Tên khách hàng không rỗng')", true);
            }

            return;
        }

        //Check số điện thoại
        if (CheckBUS.CheckPhoneNumber(txtDienThoai.Text)==false)
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtDienThoai.Text))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    txtDienThoai.Text, "alert('Số điện thoại sai định dạng số')", true);
            }

            return;
        }


        //Check Địa chỉ
        if (txtDiaChiNhan.Text == "")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), txtDiaChiNhan.Text))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    txtDiaChiNhan.Text, "alert('Địa chỉ nhận không rỗng')", true);
            }

            return;
        }

        //Check Giờ nhận
        if (cbGioNhan.SelectedValue == "--")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbGioNhan.SelectedValue))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    cbGioNhan.SelectedValue, "alert('Chưa chọn giờ phút nhận')", true);
            }

            return;
        }

        //Check Giờ nhận
        if (cbPhutNhan.SelectedValue == "--")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbPhutNhan.SelectedValue))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    cbPhutNhan.SelectedValue, "alert('Chưa chọn giờ phút nhận')", true);
            }

            return;
        }


        //Check Ngày nhận
        if (cbNgay.SelectedValue == "--")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbNgay.SelectedValue))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    cbNgay.SelectedValue, "alert('Chưa chọn ngày nhận')", true);
            }

            return;
        }



        //Check Tháng nhận
        if (cbThang.SelectedValue == "--")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbThang.SelectedValue))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    cbThang.SelectedValue, "alert('Chưa chọn tháng nhận')", true);
            }

            return;
        }


        //Check Năm nhận
        if (cbNam.SelectedValue == "--")
        {
            if (!ClientScript.IsStartupScriptRegistered(this.GetType(), cbNam.SelectedValue))
            {
                ClientScript.RegisterStartupScript(this.GetType(),
                    cbNam.SelectedValue, "alert('Chưa chọn năm nhận')", true);
            }

            return;
        }
        

        

        
        

        if (ThanhToan())
        {
            Session["Cart"] = new List<GioHangDTO>();
            Response.Redirect("ThongBao.aspx?id=pay");
        }
        else
        {
            Response.Redirect("ThongBao.aspx?id=payerror");
        }
    }


    public Boolean ThanhToan()
    {
        int flag = 0;
        //Các DTO
        List<GioHangDTO> giohangListDTO = new List<GioHangDTO>();
        HoaDonDTO hoadonDTO = new HoaDonDTO();

        //Các xử lý BUS
        ChiTietHoaDonBUS cthoadonBUS = new ChiTietHoaDonBUS();
        HoaDonBUS hoadonBUS = new HoaDonBUS();

        
        //Lấy giỏ hàng
        giohangListDTO = (List<GioHangDTO>)Session["Cart"];

        //Thêm hóa đơn
        hoadonDTO.TenKH = txtTenKhachHang.Text;
        hoadonDTO.DienThoai = txtDienThoai.Text;
        hoadonDTO.Email = "";
        hoadonDTO.NgayGioDatHang = DateTime.Now;
        hoadonDTO.DiaChiNhan = txtDiaChiNhan.Text;
        
        DateTime t = new DateTime(int.Parse(cbNam.SelectedValue),int.Parse(cbThang.SelectedValue),int.Parse(cbNgay.SelectedValue),int.Parse(cbGioNhan.SelectedValue),int.Parse(cbPhutNhan.SelectedValue),0);;

        hoadonDTO.NgayGioGiaoHang = t;


        hoadonDTO.MaTaiKhoan = "";
        hoadonDTO.HinhThucThanhToan = "";
        hoadonDTO.MaTinhTrangHD = 1;
        hoadonDTO.TongTien = new GioHangBUS().TinhTongTienGioHang(giohangListDTO);

        if (hoadonBUS.ThemHoaDon(hoadonDTO) == false)
        {
            return false;
        }

        //Lấy mã hóa đơn
        int MaHD = hoadonBUS.LayMaHoaDonMax();

        //Thêm chi tiết hóa đơn
        foreach (GioHangDTO item in giohangListDTO)
        {
            ChiTietHoaDonDTO dto = new ChiTietHoaDonDTO();
            dto.MaHD = MaHD;
            dto.MaSP = item.MaSP;
            dto.SoLuong = item.SoLuong;
            dto.DonGia = item.DonGia;
          

            if (cthoadonBUS.ThemChiTietHoaDon(dto) == false)
            {
                flag = 1;
                break;
            }
        }

        if (flag == 1)
        { 
            //rollback xóa tất cả hóa đơn có MaHD
            cthoadonBUS.XoaChiTietHoaDon_MaHD(MaHD);
            hoadonBUS.XoaHoaDon(MaHD);

            return false;
        }


        return true;
    }

    
}